有很多新上手opencv的小伙伴在图片的读取这一块常犯错误,很多小伙伴可能看到资料中的代码是这样的:
cv2.imread("lena.jpg")
然后报错是:
error: (-215) size.width>0 && size.height>0 in function cv::imshow
这里就要千万注意了,这一段千万不要照抄书上的内容。因为图片的读取是从你自己的电脑上读取图片,你的电脑上不一定有这个图片,或者路径不对,那就读取不了了。
讲到这里又不得不提到路径要注意的点了。路径分为绝对路径和相对路径了。绝对路径就是从根文件夹开始(Windows一般是以c:,d: 这些盘符作为根文件夹)一层一层地找到目标文件所在地路径,比如说以下示例:
#C:\Users\17135\Desktop\python\1.jpg
cv2.imread(r"C:\Users\17135\Desktop\python\1.jpg")
#可以表示路径的字符有两种,分别是/,\。因为\被用作转义字符,所以要在前面加个r避免转义。
#这里我的目标文件就是1.jpg
相对路径就有点像物理里面的参照物了,简单来说,你建立了一个py文件,一般没有换路径的操作的话,你的相对路径的参照物就是这个py文件的这一级。然后相对路径的表示就是其他文件相对这个参照文件的相对的路径了。比如说,我的py文件的路径是:
#C:\Users\17135\Desktop\python\opencv\imread.py
那么现在读入图片时.py文件就是我们的参照文件,而1.jpg在python目录下,所以我们要用…/(…/表示上一级目录,./表示同级目录)进入上级目录,也就是进入了python目录下(也就是进入了和opencv文件夹同一级的目录下),可知python目录有两个文件或者文件夹,一个是opencv文件夹,一个是1.jpg文件。所以绝对路径就是:
cv2.imread("../1.jpg")
简单来说要读入图片就要输入图片在你自己电脑上的图片路径,路径不对就会报错。所以说我们来看第一段代码,如果你的py文件同级目录下没有lena.jpg的话,那肯定是会报错的,人家资料这么写是因为人家py文件的同级目录下又lena.jpg这个文件。